namespace CSharpPro._1016;

public class Demo
{
    // 作业1：键盘输入三个整数x、y、z，把这三个数由小到大输出
    public void TestPrint1()
    {
        Console.WriteLine("请输入三个整数：");
        
        // 读取第一个整数
        int x;
        while (true)
        {
            Console.Write("x = ");
            if (int.TryParse(Console.ReadLine(), out x))
            {
                break;
            }
            else
            {
                Console.WriteLine("请输入有效的整数。");
            }
        }
        
        // 读取第二个整数
        int y;
        while (true)
        {
            Console.Write("y = ");
            if (int.TryParse(Console.ReadLine(), out y))
            {
                break;
            }
            else
            {
                Console.WriteLine("请输入有效的整数。");
            }
        }
        
        // 读取第三个整数
        int z;
        while (true)
        {
            Console.Write("z = ");
            if (int.TryParse(Console.ReadLine(), out z))
            {
                break;
            }
            else
            {
                Console.WriteLine("请输入有效的整数。");
            }
        }

        // 排序逻辑
        int min = Math.Min(Math.Min(x, y), z);
        int max = Math.Max(Math.Max(x, y), z);
        int mid = x + y + z - min - max;

        Console.WriteLine("从小到大排序结果：" + min + ", " + mid + ", " + max);
    }

    // 作业2：打印出1 - 100之间所有不是7的倍数和不包含7的数字，并求和
    public void TestPrint2()
    {
        int sum = 0;
        Console.WriteLine("1 - 100之间不是7的倍数和不包含7的数字：");
        
        for (int i = 1; i <= 100; i++)
        {
            // 检查是否是7的倍数
            if (i % 7 == 0)
            {
                continue;
            }
            
            // 检查是否包含数字7
            bool hasSeven = false;
            int temp = i;
            while (temp > 0)
            {
                if (temp % 10 == 7)
                {
                    hasSeven = true;
                    break;
                }
                temp /= 10;
            }
            
            if (!hasSeven)
            {
                Console.Write(i + " ");
                sum += i;
            }
        }
        
        Console.WriteLine("\n这些数字的和为：" + sum);
    }

    // 作业3：打印九九乘法表
    public void TestPrint3()
    {
        for (int i = 1; i <= 9; i++)
        {
            for (int j = 1; j <= i; j++)
            {
                Console.Write(j + "×" + i + "=" + (i * j) + "\t");
            }
            Console.WriteLine();
        }
    }

    // 作业4：求出1000以内的所有完数
    public void TestPrint4()
    {
        Console.WriteLine("1000以内的完数有：");
        
        for (int i = 1; i <= 1000; i++)
        {
            int sum = 0;
            for (int j = 1; j < i; j++)
            {
                if (i % j == 0)
                {
                    sum += j;
                }
            }
            
            if (sum == i)
            {
                Console.Write(i + " ");
            }
        }
        
        Console.WriteLine();
    }

    // 作业5：键盘录入一个正整数，求它是几位数以及逆序打印出各位数字
    public void TestPrint5()
    {
        Console.WriteLine("请输入一个正整数：");
        int num;
        
        // 确保输入有效的正整数
        while (true)
        {
            if (int.TryParse(Console.ReadLine(), out num) && num > 0)
            {
                break;
            }
            else
            {
                Console.WriteLine("请输入正整数。");
            }
        }

        // 计算位数
        int digitCount = 0;
        int temp = num;
        while (temp > 0)
        {
            temp /= 10;
            digitCount++;
        }
        Console.WriteLine(num + "是" + digitCount + "位数。");

        // 逆序打印
        Console.Write("逆序各位数字：");
        temp = num;
        while (temp > 0)
        {
            Console.Write(temp % 10 + " ");
            temp /= 10;
        }
        Console.WriteLine();
    }

    // 作业6：打印菱形，根据输入的行数显示菱形形状
    public void TestPrint6()
    {
        Console.WriteLine("请输入菱形的行数（奇数）：");
        int rows;
        
        // 确保输入有效的奇数
        while (true)
        {
            if (int.TryParse(Console.ReadLine(), out rows) && rows > 0 && rows % 2 != 0)
            {
                break;
            }
            else
            {
                Console.WriteLine("请输入正的奇数。");
            }
        }

        int mid = rows / 2 + 1;
        for (int i = 1; i <= rows; i++)
        {
            int spaceCount = Math.Abs(i - mid);
            int starCount = rows - 2 * spaceCount;

            // 打印空格
            for (int j = 0; j < spaceCount; j++)
            {
                Console.Write(" ");
            }
            
            // 打印星号
            for (int j = 0; j < starCount; j++)
            {
                Console.Write("*");
            }
            
            Console.WriteLine();
        }
    }
}

    
